Skip to content

imagemounter: fetch DDI from GitHub and improve mount reliability#720

Merged
danielpaulus merged 4 commits into
danielpaulus:mainfrom
zt-luo:imagemounter-ddi-fix
Jun 2, 2026
Merged

imagemounter: fetch DDI from GitHub and improve mount reliability#720
danielpaulus merged 4 commits into
danielpaulus:mainfrom
zt-luo:imagemounter-ddi-fix

Conversation

@zt-luo

@zt-luo zt-luo commented May 10, 2026

Copy link
Copy Markdown
Contributor
  • Switch iOS 17+ DDI source from deviceboxhq.com to github.com/doronz88/DeveloperDiskImage (build 17E5179g), resolving identity-not-found failures on newer chips (A19 Pro)
  • Add QueryPersonalizationManifest fast path: try existing device-side manifest before requesting Apple TSS, and reconnect the service on failure since the socket is closed by the device. This skips nonce + TSS on re-mounts when the manifest is still valid
  • Replace hardcoded Manifest struct with dynamic map entries and iterate all Trusted entries when building the TSS request
  • Update TSS @versioninfo and add @uuid field
  • Add ProductBuildVersion-based DDI cache validation and stream DMG/trustcache directly to disk during download

Switch iOS 17+ DDI source from deviceboxhq.com to
github.com/doronz88/DeveloperDiskImage (build 17E5179g),
resolving identity-not-found failures on newer chips (A19 Pro).

Add QueryPersonalizationManifest fast path: try existing
device-side manifest before requesting Apple TSS, and reconnect
the service on failure since the socket is closed by the device.
This skips nonce + TSS on re-mounts when the manifest is still
valid, based on pymobiledevice3's PersonalizedImageMounter.mount().

Replace hardcoded Manifest struct with dynamic map entries and
iterate all Trusted entries when building the TSS request.
Update TSS @versioninfo and add @uuid field, matching
pymobiledevice3's TSSRequest construction.

Also add ProductBuildVersion-based DDI cache validation and
stream DMG/trustcache directly to disk during download.
@zt-luo zt-luo force-pushed the imagemounter-ddi-fix branch from abc2806 to 620178c Compare May 10, 2026 14:38
danielpaulus and others added 2 commits June 2, 2026 14:51
Use the deviceboxhq CDN (owned, fast, global) for the iOS 17+ personalized DDI
rather than raw.githubusercontent.com. Bump the hosted image to build
ddi-17E5179g (the newer universal DDI that also fixes A19 Pro). The versioned
filename keeps the local cache deterministic, so the GitHub-specific cache
revalidation is no longer needed.

All of the mount-reliability improvements are kept: dynamic BuildManifest map,
QueryPersonalizationManifest fast path with reconnect, and the updated TSS
request (VersionInfo/UUID) for newer chips.

Co-Authored-By: Daniel Paulus <daniel@checklyhq.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
# Conflicts:
#	ios/imagemounter/imagedownloader.go
@danielpaulus

Copy link
Copy Markdown
Owner

Awesome stuff! I would rather keep the DDI on deviceboxhq.com because it has a fast global CDN, so I made a few changes. Thanks a ton for this improvement!

Co-Authored-By: Daniel Paulus <daniel@checklyhq.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@danielpaulus danielpaulus left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome, thanks a ton!!

@danielpaulus danielpaulus merged commit dd22a79 into danielpaulus:main Jun 2, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants